package com.psychologyCommunity.Community.config;

import com.psychologyCommunity.Community.Contoller.interceptor.*;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//配置类==配置文件
@Configuration//告诉spring这是一个配置类
public class WebMvcConfig implements WebMvcConfigurer {
    @Autowired
    private AlphaInterceptor alphaInterceptor;

    @Autowired
    private LoginTicketInterceptor loginTicketInterceptor;

    @Autowired
    private DataInterceptor dataInterceptor;

    //登录拦截器的配置 注掉
//    @Autowired
//    private LoginRequiredInterceptor loginRequiredInterceptor;

   @Autowired
    private MessageInterceptor messageInterceptor;

    //实现WebMvcConfigurer接口中的addInterceptors方法
    //spring在调用的时候会把对象传进来，我们利用它传进来的对象registry来注册Interceptor
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor(alphaInterceptor);//这样相当 拦截所有的请求
        registry.addInterceptor(alphaInterceptor)
                .excludePathPatterns("/**/*.css","/**/*.js","/**/*.png","/**/*.jpg","/**/*.jpeg")//----》/**/*.css 表示所有目录下的css文件//这表示排除哪些路径不用拦截 比如静态资源 如css html 图片 ，因为没有什么业务逻辑，可以一直访问
                .addPathPatterns("/register","/login");//表示明确拦截一些路径，比如说 注册 登录页面

        //把我们刚刚写的拦截器注册进来 --静态资源的访问也要把它排除掉，不处理，除了静态资源外的我们都要处理 所以就不用额外add
        registry.addInterceptor(loginTicketInterceptor)
                .excludePathPatterns("/**/*.css","/**/*.js","/**/*.png","/**/*.jpg","/**/*.jpeg");//----》/**/*.css 表示所有目录下的css文件//这表示排除哪些路径不用拦截 比如静态资源 如css html 图片 ，因为没有什么业务逻辑，可以一直访问

//        //把我们刚刚写的拦截器注册进来 --静态资源的访问也要把它排除掉，不处理，除了静态资源外的我们都要处理 所以就不用额外add
//        registry.addInterceptor(loginRequiredInterceptor)
//                .excludePathPatterns("/**/*.css","/**/*.js","/**/*.png","/**/*.jpg","/**/*.jpeg");//----》/**/*.css 表示所有目录下的css文件//这表示排除哪些路径不用拦截 比如静态资源 如css html 图片 ，因为没有什么业务逻辑，可以一直访问

        registry.addInterceptor(messageInterceptor)
                .excludePathPatterns("/**/*.css","/**/*.js","/**/*.png","/**/*.jpg","/**/*.jpeg");

        registry.addInterceptor(dataInterceptor)
                .excludePathPatterns("/**/*.css","/**/*.js","/**/*.png","/**/*.jpg","/**/*.jpeg");
    }

}
